import axios from "axios"

// axios.interceptors.response.use(function (response) {
//     return response;
// }, function (error) {
//     if (error.response.data.code == 401) {
//         window.location.href = '/#login'
//         window.location.reload()
//     }
//     return Promise.reject(error);
// });

let api = {

    BASE_URL: 'https://www.chuangxu.cn',

    GET(uri, param = {}, onError) {
        const url = this.BASE_URL + uri;
        const token = this.getToken();
        return axios({
            url: url,
            method: 'get',
            params: param,
            headers: {
                'Accept': 'application/json',
                'Authorization': 'Bearer ' + token
            }
        });
    },

    POST(uri, param = {}) {
        const url = this.BASE_URL + uri;
        const token = this.getToken();
        return axios({
            url: url,
            method: 'post',
            data: param,
            headers: {
                'Accept': 'application/json',
                'Authorization': 'Bearer ' + token
            }
        });
    },

    DELETE(uri) {
        const url = this.BASE_URL + uri;
        const token = this.getToken();

        return axios({
            url: url,
            method: 'delete',
            headers: {
                'Accept': 'application/json',
                'Authorization': 'Bearer ' + token
            }
        });
    },

    UPDATE(uri, param = {}) {
        const url = this.BASE_URL + uri;
        const token = this.getToken();

        return axios({
            url: url,
            method: 'put',
            data: param,
            headers: {
                'Accept': 'application/json',
                'Authorization': 'Bearer ' + token
            }
        });
    },

    initParam(args) {
        for (let key in args) {
            if (!args[key]) {
                delete args[key];
            }
        }
        return args;
    },

    getToken() {
        return sessionStorage.getItem("token");
    },


    Address: {


        /**
         * 删除用户地址
         * 需要授权信息
         * @param String id 地址信息ID

         */
        destroy(id) {

            let url = '/api/address/' + id
            return api.DELETE(url);

        },


        /**
         * 获取当前用户地址列表
         * 需要授权信息
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/address', param);


        },


        /**
         * 创建用户地址
         * 需要授权信息
         * @param String area_id 地区ID
         * @param String country 国家
         * @param String province 省
         * @param String city 市
         * @param String address 地址
         * @param String consignee 收件人
         * @param String phone 收件人电话
         * @param String zip_code 邮编

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/address', param);

        },


        /**
         * 编辑用户地址
         * 需要授权信息
         * @param String id 地址信息ID
         * @param String area_id 地区ID
         * @param String country 国家
         * @param String province 省
         * @param String city 市
         * @param String address 地址
         * @param String consignee 收件人
         * @param String phone 收件人电话
         * @param String zip_code 邮编

         */
        update(id, params) {

            let url = '/api/address/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Advert: {


        /**
         * 获取广告列表

         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/advert', param);


        },

    },

    Area: {


        /**
         * 查询地区信息

         * @param String q 关键字
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        query(params) {


            let url = '/api/area'
            let param = api.initParam(params);
            return api.GET(url, param);


        },

    },

    Article: {


        /**
         * 获取新闻/论文列表

         * @param String category_id 可选,分类ID
         * @param String recommend 可选,推荐0/1
         * @param String hot 可选,热门0/1
         * @param String top 可选,置顶0/1
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/article', param);


        },


        /**
         * 获取论文/新闻详情

         * @param String id 论文/新闻ID

         */
        show(id) {


            let url = '/api/article/' + id
            return api.GET(url);


        },

    },

    Attachment: {


        /**
         * 删除附件
         * 需要授权信息
         * @param String id 附件ID

         */
        destroy(id) {

            let url = '/api/attachment/' + id
            return api.DELETE(url);

        },


        /**
         * 获取附件列表
         * 需要授权信息
         * @param String object_type 对象类型
         * @param String object_id 对象ID
         * @param String user_id 发送者ID
         * @param String receiver_id 接收者ID
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/attachment', param);


        },


        /**
         * 创建附件
         * 需要授权信息
         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID
         * @param String title 附件标题
         * @param String uri 附件uri
         * @param String size 附件文件大小
         * @param String mime_type 附件文件类型

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/attachment', param);

        },


        /**
         * 编辑附件
         * 需要授权信息
         * @param String id 附件ID
         * @param String extra 其它信息
         * @param String folder_id 文件夹ID

         */
        update(id, params) {

            let url = '/api/attachment/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Auth: {


        /**
         * 登陆

         * @param String username 用户手机/邮箱
         * @param String password 密码
         * @param String device_token 极光推送设备编码

         */
        login(params) {

            let param = api.initParam(params);
            return api.POST('/api/auth/login', param);

        },


        /**
         * 退出登陆
         * 需要授权信息

         */
        logout(params) {

            let param = api.initParam(params);
            return api.POST('/api/auth/logout', param);

        },


        /**
         * 短信登陆

         * @param String phone 用户手机
         * @param String code 短信验证码
         * @param String device_token 极光推送设备编码

         */
        sms(params) {

            let param = api.initParam(params);
            return api.POST('/api/auth/sms', param);

        },

    },

    Captcha: {


        /**
         * 验证码创建

         * @param String id 配置

         */
        show(id) {


            let url = '/captcha/api/' + id
            return api.GET(url);


        },

    },

    Category: {


        /**
         * 获取分类列表

         * @param String category_id 可选,分类ID 新闻 d8f8d988-f4a5-4bba-88d0-fccf9cc5e8ee 商品 fddcbe8e-a80a-47fb-aae3-47e950a8b464 论文 53d39333-3678-496f-a533-f556d9ff553d 中文期刊 22f74bd1-763b-455f-8877-fbb26eec093e 英文期刊 97c1f64f-c92e-4dd3-99ef-51c01ae29a16 帖子 ddce6ba2-e656-11e8-90d7-a081a5b9b047
         * @param Number recommend 可选,是否推荐 0 不推荐/1 推荐

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/category', param);


        },

    },

    Comment: {


        /**
         * 删除评论
         * 需要授权信息
         * @param String id 评论ID

         */
        destroy(id) {

            let url = '/api/comment/' + id
            return api.DELETE(url);

        },


        /**
         * 获取评论列表

         * @param String object_type 评论对象类型 新闻:article_news/论文:article_paper/中文期刊:journal_cn/英文期型:journal_sci
         * @param String object_id 可选,评论对象ID
         * @param String comment_id 可选,被回复的评论ID
         * @param JSONArray user_ids 可选,用户ID列表
         * @param JSONArray at_ids 可选,被回复的用户ID列表
         * @param Number hot 可选,是否热门0/1
         * @param Number top 可选,是否置顶0/1
         * @param Number recommend 可选,是否推荐0/1
         * @param String order_by 可选,排序字段
         * @param String order_direction 可选,排序方向asc/desc
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/comment', param);


        },


        /**
         * 获取评论详情

         * @param String id 评论ID

         */
        show(id) {


            let url = '/api/comment/' + id
            return api.GET(url);


        },


        /**
         * 创建评论
         * 需要授权信息
         * @param String object_type 评论对象类型 新闻:article_news/论文:article_paper/中文期刊:journal_cn/英文期型:journal_sci
         * @param String object_id 评论对象ID
         * @param String content 评论内容
         * @param String comment_id 可选,被回复的评论ID
         * @param String at_id 可选,被回复的用户ID

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/comment', param);

        },

    },

    Common: {


        /**
         * 基本请求


         */
        index(params) {

            let url = '/'
            return api.DELETE(url);

        },

    },

    Config: {


        /**
         * 获取配置列表


         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/config', param);


        },


        /**
         * 获取STS授权信息
         * 需要授权信息

         */
        stsToken(params) {


            let url = '/api/config/sts/token'
            return api.GET(url);


        },


        /**
         * 获取上传配置信息


         */
        upload(params) {


            let url = '/api/config/upload'
            return api.GET(url);


        },

    },

    Correction: {


        /**
         * 删除Correction
         * 需要授权信息
         * @param String id Correction ID

         */
        destroy(id) {

            let url = '/api/correction/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Correction列表

         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/correction', param);


        },


        /**
         * 获取Correction详情

         * @param String id Correction ID

         */
        show(id) {


            let url = '/api/correction/' + id
            return api.GET(url);


        },


        /**
         * 创建Correction
         * 需要授权信息
         * @param String object_type 对象类型,论文paper_article/求助下载paper_comment/评论comment/新闻article_news/帖子post/中文期刊journal_cn/英文期刊journal_sci/科学前沿article_paper
         * @param String object_id 可选,对象ID
         * @param JSONObject data 更正数据

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/correction', param);

        },


        /**
         * 编辑Correction
         * 需要授权信息
         * @param String id Correction ID

         */
        update(id) {

            let url = '/api/correction/' + id

            return api.UPDATE(url);


        },

    },

    Document: {


        /**
         * 下载文档
         * 需要授权信息
         * @param String id 文档ID

         */
        download(params) {

            let url = '/api/document/' + id

            return api.UPDATE(url);


        },


        /**
         * 获取文档列表
         * 需要授权信息
         * @param String folder_id 对象类型
         * @param String project_id 对象ID
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/document', param);


        },

    },

    Email: {


        /**
         * 重新发送验证邮件
         * 需要授权信息

         */
        resend(params) {

            let param = api.initParam(params);
            return api.POST('/api/email/resend', param);

        },


        /**
         * 验证Email
         * 需要授权信息
         * @param String id 用户ID
         * @param String expires 时间戳
         * @param String signature 签名字符串

         */
        verify(id, params) {


            let url = '/api/email/verify/' + id
            let param = api.initParam(params);
            return api.GET(url, param);


        },

    },

    Feedback: {


        /**
         * 删除反馈
         * 需要授权信息
         * @param String id 反馈ID

         */
        destroy(id) {

            let url = '/api/feedback/' + id
            return api.DELETE(url);

        },


        /**
         * 获取反馈列表
         * 需要授权信息
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/feedback', param);


        },


        /**
         * 创建反馈
         * 需要授权信息
         * @param String content 反馈内容
         * @param String phone 联系电话
         * @param JSONArray medias 可选,[{&quot;uri&quot;:&quot;upload/feedback/1540172953086174.png&quot;,&quot;size&quot;:123}...]

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/feedback', param);

        },

    },

    Field: {


        /**
         * 删除Field
         * 需要授权信息
         * @param String id Field ID

         */
        destroy(id) {

            let url = '/api/field/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Field列表

         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/field', param);


        },


        /**
         * 获取Field详情

         * @param String id Field ID

         */
        show(id) {


            let url = '/api/field/' + id
            return api.GET(url);


        },


        /**
         * 创建Field
         * 需要授权信息
         * @param String title 标题

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/field', param);

        },


        /**
         * 编辑Field
         * 需要授权信息
         * @param String id Field ID

         */
        update(id) {

            let url = '/api/field/' + id

            return api.UPDATE(url);


        },

    },

    Group: {


        /**
         * 删除群
         * 需要授权信息
         * @param String id 群ID

         */
        destroy(id) {

            let url = '/api/group/' + id
            return api.DELETE(url);

        },


        /**
         * 获取群列表
         * 需要授权信息

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/group', param);


        },


        /**
         * 获取群详情

         * @param String id 群ID

         */
        show(id) {


            let url = '/api/group/' + id
            return api.GET(url);


        },


        /**
         * 创建群
         * 需要授权信息
         * @param String title 群名称

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/group', param);

        },


        /**
         * 编辑群
         * 需要授权信息
         * @param String title 群标题
         * @param String slug 群缩写

         */
        update(params) {

            let url = '/api/group/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Hospital: {


        /**
         * 获取医院列表

         * @param String area_id 可选,地区ID
         * @param String query 可选,关键词
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/hospital', param);


        },

    },

    Index: {


        /**
         * 获取索引列表

         * @param Number recommend 可选,是否推荐 0 不推荐/1 推荐

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/index', param);


        },

    },

    Invite: {


        /**
         * 获取邀请列表

         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/invite', param);


        },


        /**
         * 创建邀请
         * 需要授权信息
         * @param JSONArray items 可选,邀请列表.[{&quot;greeting&quot;:&quot;xxx&quot;,&quot;name&quot;:&quot;xxx&quot;,&quot;email&quot;:&quot;xxx&quot;}]
         * @param String greeting 可选,称呼
         * @param String name 可选,名字
         * @param String email 可选,邮箱

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/invite', param);

        },

    },

    Invoice: {


        /**
         * 删除Invoice
         * 需要授权信息
         * @param String id Invoice ID

         */
        destroy(id) {

            let url = '/api/invoice/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Invoice列表

         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/invoice', param);


        },


        /**
         * 获取Invoice详情

         * @param String id Invoice ID

         */
        show(id) {


            let url = '/api/invoice/' + id
            return api.GET(url);


        },


        /**
         * 创建Invoice
         * 需要授权信息
         * @param String type 发票类型
         * @param String send_type 寄送类型
         * @param String title 标题
         * @param String tax_number 税号
         * @param String address_id 寄送地址
         * @param String remark 可选,备注

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/invoice', param);

        },


        /**
         * 编辑Invoice
         * 需要授权信息
         * @param String id Invoice ID
         * @param String type 可选,发票类型
         * @param String send_type 可选,寄送类型
         * @param String title 可选,标题
         * @param String tax_number 可选,税号
         * @param String address_id 可选,寄送地址
         * @param String remark 可选,备注

         */
        update(id, params) {

            let url = '/api/invoice/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Journal: {


        /**
         * 获取期刊列表

         * @param Number type 类型.固定为cn:1/sci:2
         * @param Number recommend 可选,推荐 若无query时为必填
         * @param String query 可选,关键词 若无recommend时为必填,若无查询条件时传'*'
         * @param Number meta 可选,是否需要分页信息.0/1.
         * @param JSONArray category_ids 可选,分类ID列表,JSONArray形式
         * @param JSONArray index_ids 可选,索引ID列表,JSONArray形式
         * @param Number is_out 可选,是否踢出
         * @param Number is_new 可选,是否新增
         * @param Number is_rubbish 可选,是否水刊
         * @param Number factor_min 可选,IF小值
         * @param Number factor_max 可选,IF大值
         * @param String sector 可选,分区
         * @param String level 可选,期刊级别,仅中文,省级/国家级
         * @param String country 可选,国家
         * @param String province 可选,省份,仅中文
         * @param JSONArray sorts 可选,排序方式[{&quot;order&quot;:&quot;xxx&quot;, &quot;direction&quot;:&quot;asc/desc&quot;},...]
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/journal', param);


        },


        /**
         * 获取期刊详情

         * @param String id 期刊ID

         */
        show(id) {


            let url = '/api/journal/' + id
            return api.GET(url);


        },

    },

    Message: {


        /**
         * 获取消息列表
         * 需要授权信息

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/message', param);


        },


        /**
         * 创建Message
         * 需要授权信息
         * @param String project_id 项目ID
         * @param String user_id 用户ID
         * @param String content 消息内容

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/message', param);

        },

    },

    Node: {


        /**
         * 批量更新Node用户
         * 需要授权信息
         * @param JSONArray items 批量更新数据,格式[{&quot;node_id&quot;,&quot;xxx&quot;,&quot;user_ids&quot;:[&quot;xxx&quot;,&quot;xxx&quot;]}]

         */
        batchUpdate(params) {

            let url = '/api/node/batch/update'

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 更新Node用户
         * 需要授权信息
         * @param String id Node id

         */
        complete(id) {

            let url = '/api/node/' + id + '/complete'

            return api.UPDATE(url);


        },


        /**
         * 取Node数据
         * 需要授权信息
         * @param String id Node id

         */
        data(id) {


            let url = '/api/node/' + id + '/data'
            return api.GET(url);


        },


        /**
         * 删除Node
         * 需要授权信息
         * @param String id Node id

         */
        destroy(id) {

            let url = '/api/node/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Node列表
         * 需要授权信息
         * @param String project_id 项目ID

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/node', param);


        },


        /**
         * 获取Node详情

         * @param String id Node id

         */
        show(id) {


            let url = '/api/node/' + id
            return api.GET(url);


        },


        /**
         * 创建Node
         * 需要授权信息
         * @param String title title

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/node', param);

        },


        /**
         * 更新Node
         * 需要授权信息
         * @param String id Node id
         * @param Number status 可选,状态.0/1

         */
        update(id, params) {

            let url = '/api/node/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 更新Node数据
         * 需要授权信息
         * @param String id Node id
         * @param JSONObject data 数据

         */
        updateData(id, params) {

            let url = '/api/node/' + id + '/data'

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 更新Node用户
         * 需要授权信息
         * @param String id Node id
         * @param JSONArray user_ids User id

         */
        updateUser(id, params) {

            let url = '/api/node/' + id + '/user'

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 取Node用户
         * 需要授权信息
         * @param String id Node id

         */
        users(id) {


            let url = '/api/node/' + id + '/user'
            return api.GET(url);


        },

    },

    Note: {


        /**
         * 删除笔记
         * 需要授权信息
         * @param String id 笔记ID

         */
        destroy(id) {

            let url = '/api/note/' + id
            return api.DELETE(url);

        },


        /**
         * 获取笔记列表
         * 需要授权信息
         * @param String object_type 对象类型
         * @param String object_id 对象ID
         * @param String category_id 分类ID

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/note', param);


        },


        /**
         * 获取笔记详情

         * @param String id 笔记ID

         */
        show(id) {


            let url = '/api/note/' + id
            return api.GET(url);


        },


        /**
         * 创建笔记
         * 需要授权信息
         * @param String object_type 对象类型
         * @param String object_id 对象ID
         * @param String category_id 分类ID
         * @param String content 笔记内容

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/note', param);

        },


        /**
         * 编辑笔记
         * 需要授权信息
         * @param String id 笔记ID
         * @param String content 可选,笔记内容.category_id为空时必填.
         * @param String category_id 可选,分类ID.content为空时必填.

         */
        update(id, params) {

            let url = '/api/note/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Notification: {


        /**
         * 删除通知
         * 需要授权信息
         * @param String id 通知ID

         */
        destroy(id) {

            let param = api.initParam(params);
            return api.POST('/api/notification/destroy', param);

        },


        /**
         * 获取通知列表
         * 需要授权信息

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/notification', param);


        },


        /**
         * 标记通知为已读
         * 需要授权信息
         * @param String id 通知信息ID,如果未传由表示标记所有

         */
        read(params) {

            let param = api.initParam(params);
            return api.POST('/api/notification/read', param);

        },

    },

    OperationData: {


        /**
         * 删除OperationData
         * 需要授权信息
         * @param String id OperationData ID

         */
        destroy(id) {

            let url = '/api/operation/data/' + id
            return api.DELETE(url);

        },


        /**
         * 获取OperationData列表

         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/operation/data', param);


        },


        /**
         * 获取OperationData详情

         * @param String id OperationData ID

         */
        show(id) {


            let url = '/api/operation/data/' + id
            return api.GET(url);


        },


        /**
         * 创建OperationData
         * 需要授权信息
         * @param String title 标题

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/operation/data', param);

        },


        /**
         * 编辑OperationData
         * 需要授权信息
         * @param String id OperationData ID

         */
        update(id) {

            let url = '/api/operation/data/' + id

            return api.UPDATE(url);


        },

    },

    OperationUser: {


        /**
         * 删除OperationUser
         * 需要授权信息
         * @param String id OperationUser ID

         */
        destroy(id) {

            let url = '/api/operationUser/' + id
            return api.DELETE(url);

        },


        /**
         * 获取OperationUser列表

         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/operationUser', param);


        },


        /**
         * 获取OperationUser详情

         * @param String id OperationUser ID

         */
        show(id) {


            let url = '/api/operationUser/' + id
            return api.GET(url);


        },


        /**
         * 创建OperationUser
         * 需要授权信息
         * @param String title 标题

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/operationUser', param);

        },


        /**
         * 编辑OperationUser
         * 需要授权信息
         * @param String id OperationUser ID

         */
        update(id) {

            let url = '/api/operationUser/' + id

            return api.UPDATE(url);


        },

    },

    Operation: {


        /**
         * 删除Operation
         * 需要授权信息
         * @param String id Operation id

         */
        destroy(id) {

            let url = '/api/operation/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Operation列表
         * 需要授权信息
         * @param String node_id 节点ID

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/operation', param);


        },


        /**
         * 获取Operation详情

         * @param String id Operation id

         */
        show(id) {


            let url = '/api/operation/' + id
            return api.GET(url);


        },


        /**
         * 创建Operation
         * 需要授权信息
         * @param String title title

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/operation', param);

        },


        /**
         * 更新Operation
         * 需要授权信息
         * @param String title title

         */
        update(params) {

            let url = '/api/operation/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Order: {


        /**
         * 删除订单
         * 需要授权信息
         * @param String id 订单ID

         */
        destroy(id) {

            let url = '/api/order/' + id
            return api.DELETE(url);

        },


        /**
         * 强制设置订单状态
         * 需要授权信息
         * @param String id 订单ID
         * @param Number status 订单状态
         * @param String content 可选,拒绝原因.当status为关闭时必填.

         */
        forceUpdate(id, params) {

            let url = '/api/order/' + id + '/update'

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 获取订单列表
         * 需要授权信息
         * @param String status 可选,订单状态.0 已完成/1 询价中/2 未支付/3 已预付/4 已支付/5 已发货/6 已收货/7 已评价/-1 已取消/-2 已删除/-3 退款中/-4 已退款
         * @param Number product_id 可选,主商品ID
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/order', param);


        },


        /**
         * 发起支付
         * 需要授权信息
         * @param String id 订单序列号
         * @param String pay_type 支付方式

         */
        pay(id, params) {

            let url = '/api/order/' + id + '/pay'

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 调价
         * 需要授权信息
         * @param String id 订单ID
         * @param Number price 价格

         */
        price(id, params) {

            let url = '/api/order/' + id + '/price'

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 订单详情
         * 需要授权信息
         * @param String id 订单ID

         */
        show(id) {


            let url = '/api/order/' + id
            return api.GET(url);


        },


        /**
         * 创建Order
         * 需要授权信息
         * @param String product_id 根商品ID
         * @param JSONArray details 商品列表,格式:[{&quot;product_id&quot;:&quot;xxx&quot;,&quot;quantity&quot;:1},...]
         * @param JSONArray chart_attachments 可选,图表附件信息,仅product_id为数据分析时存在。格式:[{&quot;id&quot;:&quot;xxx&quot;,&quot;extra&quot;:{&quot;background&quot;:&quot;xxx&quot;,&quot;color&quot;:&quot;xxx&quot;,&quot;remark&quot;:&quot;xxx&quot;}},...]
         * @param String title 可选,项目名称.仅当product_id为数据分析时必填

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/order', param);

        },


        /**
         * 编辑Order
         * 需要授权信息
         * @param String id Order ID
         * @param Number status 可选,状态,只能是-1 已取消/-2 已删除
         * @param String product_id 可选,商品ID.当details存在时必填
         * @param JSONArray details 可选,商品列表,当product_id存在时必填.格式:[{&quot;product_id&quot;:&quot;xxx&quot;,&quot;quantity&quot;:1},...]
         * @param JSONArray chart_attachments 可选,图表附件信息,仅product_id为数据分析时存在。格式:[{&quot;id&quot;:&quot;xxx&quot;,&quot;extra&quot;:{&quot;background&quot;:&quot;xxx&quot;,&quot;color&quot;:&quot;xxx&quot;,&quot;remark&quot;:&quot;xxx&quot;}},...]
         * @param String address_id 可选,地址ID

         */
        update(id, params) {

            let url = '/api/order/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Paper: {


        /**
         * 下载论文
         * 需要授权信息
         * @param String id 文档ID
         * @param String object_type 对象类型.论文下载paper_article/求助下载paper_comment

         */
        download(params) {


            let url = '/api/paper/' + id + '/download'
            let param = api.initParam(params);
            return api.GET(url, param);


        },

    },

    Password: {


        /**
         * 用户重置密码

         * @param String email 手机号,无phone时必填
         * @param String phone 手机号,无email时必填
         * @param String password 密码
         * @param String password_confirmation 重复密码
         * @param String token 重置密码token

         */
        reset(params) {

            let param = api.initParam(params);
            return api.POST('/api/password/reset', param);

        },

    },

    Permission: {


        /**
         * 获取权限列表,无参数时取当前用户所有权限
         * 需要授权信息
         * @param string user_id 可选,用户ID
         * @param string role_id 可选,用户ID

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/permission', param);


        },

    },

    Position: {


        /**
         * 获取职位列表

         * @param String parent_id 可选,父级ID
         * @param String query 可选,关键词
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/position', param);


        },

    },

    Post: {


        /**
         * 删除帖子
         * 需要授权信息
         * @param String id 帖子ID

         */
        destroy(id) {

            let url = '/api/post/' + id
            return api.DELETE(url);

        },


        /**
         * 获取帖子列表
         * 需要授权信息
         * @param String query 可选,查询关键词,如果category_id为空则必填
         * @param String category_id 可选,分类ID,如果query为空则必填
         * @param String user_id 可选,用户ID
         * @param JSONArray status 可选,状态 -1已取消/0新发布/1已审核/2已回答/3已关闭
         * @param Number hot 可选,是否热门0/1
         * @param Number top 可选,是否置顶0/1
         * @param Number recommend 可选,是否推荐0/1
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/post', param);


        },


        /**
         * 获取帖子详情
         * 需要授权信息
         * @param String id 帖子ID

         */
        show(id) {


            let url = '/api/post/' + id
            return api.GET(url);


        },


        /**
         * 创建帖子
         * 需要授权信息
         * @param String category_id 帖子分类ID
         * @param String title 可选,帖子标题
         * @param String content 帖子内容
         * @param JSONObject extra 可选,帖子附加信息,json字符串

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/post', param);

        },

    },

    Price: {


        /**
         * 删除Price
         * 需要授权信息
         * @param String id Price ID

         */
        destroy(id) {

            let url = '/api/price/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Price列表

         * @param String user_id 可选,用户ID
         * @param String product_id 可选,商品ID
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/price', param);


        },


        /**
         * 获取Price详情

         * @param String id Price ID

         */
        show(id) {


            let url = '/api/price/' + id
            return api.GET(url);


        },


        /**
         * 创建Price
         * 需要授权信息
         * @param String user_id 用户ID
         * @param String product_id 商品ID
         * @param Number price 商品价格

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/price', param);

        },


        /**
         * 编辑Price
         * 需要授权信息
         * @param String id Price ID
         * @param Number price 商品价格

         */
        update(id, params) {

            let url = '/api/price/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Product: {


        /**
         * 获取商品列表

         * @param String category_id 可选,分类ID 期刊投稿 faf678d4-ea70-45d3-90b1-4827fd096ab1 查重 de194491-5d80-4465-94a5-84ec843121b3 润色 a87d0f17-52ca-427b-bb4f-73b2195e197e 公共实验室 8dbd582f-9d44-445b-b869-9e0ea0712c17 实验 395139e2-e6dd-11e8-8fa9-e7db9559feed
         * @param String parent_id 可选,父级商品ID
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/product', param);


        },


        /**
         * 商品详情

         * @param String id 订单ID

         */
        show(id) {


            let url = '/api/product/' + id
            return api.GET(url);


        },

    },

    ProjectDetail: {


        /**
         * 删除ProjectDetail
         * 需要授权信息
         * @param String id ProjectDetail ID

         */
        destroy(id) {

            let url = '/api/project/detail/' + id
            return api.DELETE(url);

        },


        /**
         * 获取ProjectDetail列表

         * @param String project_id 项目ID
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/project/detail', param);


        },


        /**
         * 获取ProjectDetail详情

         * @param String id ProjectDetail ID

         */
        show(id) {


            let url = '/api/project/detail/' + id
            return api.GET(url);


        },


        /**
         * 创建ProjectDetail
         * 需要授权信息
         * @param String project_id 项目ID
         * @param String journal_id 期刊ID
         * @param String style 风格
         * @param String summary 摘要
         * @param String field_id1 研究领域1
         * @param String field_id2 研究领域2
         * @param String field_id3 研究领域3
         * @param String budget 预算
         * @param String depth 研究深度
         * @param String department 部门
         * @param String cell_line 细胞系
         * @param String animal_type 动物类型
         * @param String quantity 数量
         * @param String remark 备注
         * @param JSONObject extra 附加信息

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/project/detail', param);

        },


        /**
         * 编辑ProjectDetail
         * 需要授权信息
         * @param String id ProjectDetail ID
         * @param String journal_id 期刊ID
         * @param String style 风格
         * @param String summary 摘要
         * @param String field_id1 研究领域1
         * @param String field_id2 研究领域2
         * @param String field_id3 研究领域3
         * @param String budget 预算
         * @param String depth 研究深度
         * @param String department 部门
         * @param String cell_line 细胞系
         * @param String animal_type 动物类型
         * @param String quantity 数量
         * @param String remark 备注
         * @param JSONObject extra 附加信息

         */
        update(id, params) {

            let url = '/api/project/detail/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Project: {


        /**
         * 删除Project
         * 需要授权信息
         * @param String id Project ID

         */
        destroy(id) {

            let url = '/api/project/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Project列表
         * 需要授权信息
         * @param String category_id 分类ID
         * @param String query 关键字,按标题搜索
         * @param String team_id 团队ID
         * @param Number status 状态,1询价中/2未支付/3未分配/4正在进行/5已完成
         * @param String order_by 可选,排序字段,默认创建时间
         * @param String order_direction 可选,排序方向asc/desc,默认desc
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/project', param);


        },


        /**
         * 强制开启项目
         * 需要授权信息
         * @param String id Project ID

         */
        open(id) {

            let url = '/api/project/' + id + '/open'

            return api.UPDATE(url);


        },


        /**
         * 获取Project详情
         * 需要授权信息
         * @param String id Project ID

         */
        show(id) {


            let url = '/api/project/' + id
            return api.GET(url);


        },


        /**
         * 创建Project
         * 需要授权信息
         * @param String title 标题

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/project', param);

        },


        /**
         * 编辑Project
         * 需要授权信息
         * @param String id Project ID
         * @param String team_id 团队ID
         * @param Number status 状态,1询价中/2未支付/3未分配团队/4未分配编辑/5正在进行/6已完成
         * @param String title 项目名称
         * @param DateTime dead_line 预期完成时间
         * @param String attachment_id 查重的附件ID
         * @param JSONArray manuscript_attachments 手稿附件信息,格式:[{&quot;id&quot;:&quot;xxx&quot;,&quot;extra&quot;:{&quot;background&quot;:&quot;xxx&quot;,&quot;color&quot;:&quot;xxx&quot;,&quot;remark&quot;:&quot;xxx&quot;}},...]
         * @param JSONArray chart_attachments 图表附件信息,格式:[{&quot;id&quot;:&quot;xxx&quot;,&quot;extra&quot;:{&quot;background&quot;:&quot;xxx&quot;,&quot;color&quot;:&quot;xxx&quot;,&quot;remark&quot;:&quot;xxx&quot;}},...]
         * @param JSONArray reference_attachments 引用附件信息,格式:[{&quot;id&quot;:&quot;xxx&quot;,&quot;extra&quot;:{&quot;background&quot;:&quot;xxx&quot;,&quot;color&quot;:&quot;xxx&quot;,&quot;remark&quot;:&quot;xxx&quot;}},...]
         * @param JSONObject detail 图表附件信息,字段包括style, summary, journal_id, field_id1, field_id2, field_id3, budget, depth, department, cell_line, animal_type, quantity, remark, extra{terms,image_level,image_color}

         */
        update(id, params) {

            let url = '/api/project/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Report: {


        /**
         * 获取举报列表

         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/report', param);


        },


        /**
         * 创建举报
         * 需要授权信息
         * @param String object_type 举报对象类型
         * @param String object_id 举报对象ID
         * @param String reason 举报原因

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/report', param);

        },

    },

    Resource: {


        /**
         * 获取资源列表,无参数时取当前用户所有资源
         * 需要授权信息
         * @param string role_id 可选,角色ID
         * @param string permission_id 可选,权限ID

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/resource', param);


        },

    },

    Role: {


        /**
         * 删除角色
         * 需要授权信息
         * @param String id 角色ID

         */
        destroy(id) {

            let url = '/api/role/' + id
            return api.DELETE(url);

        },


        /**
         * 获取角色列表,无参数时取当前用户所有角色
         * 需要授权信息
         * @param string user_id 可选,用户ID

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/role', param);


        },


        /**
         * 获取角色详情

         * @param String id 角色ID

         */
        show(id) {


            let url = '/api/role/' + id
            return api.GET(url);


        },


        /**
         * 创建角色
         * 需要授权信息
         * @param String title 角色名称
         * @param String slug 角色缩写

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/role', param);

        },


        /**
         * 编辑角色
         * 需要授权信息
         * @param String title 角色标题
         * @param String slug 角色缩写

         */
        update(params) {

            let url = '/api/role/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Search: {


        /**
         * 搜索

         * @param JSONArray type 搜索类型.article_news新闻/article_paper论文/search搜索建议
         * @param String query 搜索关键词
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/search', param);


        },


        /**
         * 获取搜索关键词列表

         * @param String type 搜索类型,article_news新闻/article_paper论文
         * @param Number hot 可选,是否热门0/1
         * @param Number top 可选,是否置顶0/1
         * @param Number recommend 可选,是否推荐0/1
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        random(params) {


            let url = '/api/search/rand'
            let param = api.initParam(params);
            return api.GET(url, param);


        },

    },

    Sms: {


        /**
         * 获取短信验证码

         * @param String phone 手机号
         * @param String type 类型 注册 1/登陆 2/找回密码 3/绑定手机 4

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/sms', param);

        },

    },

    Statistics: {


        /**
         * 统计详情

         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID

         */
        detail(params) {

            let param = api.initParam(params);
            return api.POST('/api/statistics/detail', param);

        },


        /**
         * 收藏次数

         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID

         */
        favor(params) {

            let param = api.initParam(params);
            return api.POST('/api/statistics/favor', param);

        },


        /**
         * 分享次数

         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID

         */
        share(params) {

            let param = api.initParam(params);
            return api.POST('/api/statistics/view', param);

        },


        /**
         * 累加统计数据

         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID
         * @param String field 字段,可以是'view_count', 'share_count', 'up_count', 'favor_count', 'stat_num1', 'stat_num2', 'stat_num3'

         */
        tick(params) {

            let param = api.initParam(params);
            return api.POST('/api/statistics/tick', param);

        },


        /**
         * 点赞次数

         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID

         */
        up(params) {

            let param = api.initParam(params);
            return api.POST('/api/statistics/up', param);

        },


        /**
         * 查看次数

         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID

         */
        view(params) {

            let param = api.initParam(params);
            return api.POST('/api/statistics/view', param);

        },

    },

    Subject: {


        /**
         * 获取专业列表

         * @param String parent_id 可选,父级ID
         * @param String query 可选,关键词
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/subject', param);


        },

    },

    SubmissionItem: {


        /**
         * 删除投稿项
         * 需要授权信息
         * @param String id 投稿项ID

         */
        destroy(id) {

            let url = '/api/submission/item/' + id
            return api.DELETE(url);

        },


        /**
         * 获取投稿项列表
         * 需要授权信息
         * @param String submission_id 投稿ID

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/submission/item', param);


        },


        /**
         * 获取投稿项详情

         * @param String id 期刊ID

         */
        show(id) {


            let url = '/api/submission/item/' + id
            return api.GET(url);


        },


        /**
         * 创建投稿项
         * 需要授权信息
         * @param String submission_id 投稿ID
         * @param String journal_id 期刊ID
         * @param String state 状态

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/submission/item', param);

        },


        /**
         * 编辑投稿项
         * 需要授权信息
         * @param String id 投稿项ID
         * @param String journal_id 期刊ID
         * @param String state 状态

         */
        update(id, params) {

            let url = '/api/submission/item/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Submission: {


        /**
         * 删除投稿
         * 需要授权信息
         * @param String id 投稿ID

         */
        destroy(id) {

            let url = '/api/submission/' + id
            return api.DELETE(url);

        },


        /**
         * 获取投稿列表
         * 需要授权信息
         * @param Number status 0/1
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数
         * @param String direction 可选,排序方向.asc/desc

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/submission', param);


        },


        /**
         * 获取投稿详情

         * @param String id 投稿ID

         */
        show(id) {


            let url = '/api/submission/' + id
            return api.GET(url);


        },


        /**
         * 创建投稿
         * 需要授权信息
         * @param String title 投稿标题

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/submission', param);

        },


        /**
         * 编辑投稿
         * 需要授权信息
         * @param String id 投稿ID
         * @param String title 投稿标题
         * @param String item_id 接收项ID

         */
        update(id, params) {

            let url = '/api/submission/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Subscribe: {


        /**
         * 获取未订阅的分类列表
         * 需要授权信息
         * @param String type 收藏类型,article_news新闻/article_paper论文/journal_cn中文期刊/journal_sci英文期刊
         * @param Array category_id 可选,父级分类ID

         */
        available(params) {


            let url = '/api/subscribe/available'
            let param = api.initParam(params);
            return api.GET(url, param);


        },


        /**
         * 获取订阅的分类列表
         * 需要授权信息
         * @param String type 收藏类型,article_news新闻/article_paper论文/journal_cn中文期刊/journal_sci英文期刊

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/subscribe', param);


        },


        /**
         * 创建订阅
         * 需要授权信息
         * @param String type 收藏类型,article_news新闻/article_paper论文/journal_cn中文期刊/journal_sci英文期刊
         * @param Array category_ids 订阅的分类ID列表

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/subscribe', param);

        },

    },

    Tag: {


        /**
         * 获取标签列表
         * 需要授权信息
         * @param String object_type 评论对象类型
         * @param String object_id 评论对象ID
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/tag', param);


        },

    },

    Team: {


        /**
         * 删除Team
         * 需要授权信息
         * @param String id Team id

         */
        destroy(id) {

            let url = '/api/team/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Team列表
         * 需要授权信息

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/team', param);


        },


        /**
         * 获取Team详情

         * @param String id Team id

         */
        show(id) {


            let url = '/api/team/' + id
            return api.GET(url);


        },


        /**
         * 创建Team
         * 需要授权信息
         * @param String title 名称

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/team', param);

        },


        /**
         * 更新Team
         * 需要授权信息
         * @param String title title

         */
        update(params) {

            let url = '/api/team/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 获取Team详情

         * @param String id Team id
         * @param String role_id 可选,Role id

         */
        user(id, params) {


            let url = '/api/team/' + id + '/user'
            let param = api.initParam(params);
            return api.GET(url, param);


        },

    },

    Token: {


        /**
         * 创建WEB上传Token
         * 需要授权信息
         * @param String type 上传文件类型,editing 高级润色/data 数据分析/chart 图表文件/submission 投稿
         * @param String object_type 可选,当object_id存在时必须存在.附件类型
         * @param String object_id 可选,当object_type存在时必须存在.附件类型ID
         * @param String title 附件名称
         * @param String receiver_id 可选,接收者ID

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/token', param);

        },

    },

    UserGroup: {


        /**
         * 删除群用户
         * 需要授权信息
         * @param String group_id 群ID
         * @param String user_id 用户ID

         */
        destroy(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/group', param);

        },


        /**
         * 创建群用户
         * 需要授权信息
         * @param String group_id 群ID
         * @param String user_id 用户ID

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/group', param);

        },

    },

    UserOperation: {


        /**
         * 删除操作
         * 需要授权信息
         * @param String id 操作ID

         */
        destroy(id) {

            let url = '/api/user/operation/' + id
            return api.DELETE(url);

        },


        /**
         * 获取操作列表
         * 需要授权信息
         * @param String object_type 对象类型,论文paper_article/求助下载paper_comment/评论comment/新闻article_news/帖子post/中文期刊journal_cn/英文期刊journal_sci/科学前沿article_paper
         * @param JSONArray operation_type 操作类型1查看/2评论/3点赞/4收藏/5分享/6购买/7下载
         * @param String object_id 可选,对象ID.有该字段时表示取当前用户某个对象的操作
         * @param String order_by 可选,排序字段
         * @param String order_direction 可选,排序方向asc/desc
         * @param Number page 可选,页码
         * @param Number size 可选,每页条数

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/user/operation', param);


        },


        /**
         * 创建操作
         * 需要授权信息
         * @param String object_type 对象类型,论文paper_article/求助下载paper_comment/评论comment/新闻article/帖子post/中文期刊journal_cn/英文期刊journal_sci/科学前沿article_paper
         * @param String object_id 评论对象ID
         * @param String operation_type 操作类型1查看/2评论/3点赞/4收藏/5分享/6购买/7下载

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/operation', param);

        },

    },

    UserTeam: {


        /**
         * 删除团队用户
         * 需要授权信息
         * @param String group_id 团队ID
         * @param String user_id 用户ID

         */
        destroy(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/team', param);

        },


        /**
         * 创建团队用户
         * 需要授权信息
         * @param String team_id 团队ID
         * @param String user_id 用户ID

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/team', param);

        },

    },

    User: {


        /**
         * 修改用户头像
         * 需要授权信息
         * @param String is_cover 是否背景, 0否/1是
         * @param String uri 地址
         * @param String size 大小

         */
        editAvatar(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/avatar/edit', param);

        },


        /**
         * 修改用户信息
         * 需要授权信息
         * @param String name 姓名
         * @param String real_name 姓名
         * @param String gender 性别, -1未知/0女/1男
         * @param String email2 备用邮箱
         * @param String introduce 简介
         * @param String country 国家ID
         * @param String area_id 地区ID
         * @param String hospital_id 医院ID
         * @param String hospital_title 输入的医院名称
         * @param String school_id 学校ID
         * @param String school_title 输入的学校名称
         * @param String department_id 部门ID
         * @param String department_title 输入的部门名称
         * @param String subject_id 专业ID
         * @param String subject_title 输入的专业名称
         * @param String position_id 职位
         * @param String position_title 职位
         * @param String orcid ORCID
         * @param String language 语言
         * @param String currency 货币

         */
        editInfo(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/info/edit', param);

        },


        /**
         * 修改密码
         * 需要授权信息
         * @param String old_password 原密码
         * @param String password 密码

         */
        editPassword(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/password/edit', param);

        },


        /**
         * 取用户信息
         * 需要授权信息
         * @param String id 用户ID,若未提供则取当前用户信息

         */
        info(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/info', param);

        },


        /**
         * 用户创建

         * @param String email 手机号,无phone时必填
         * @param String phone 手机号,无email时必填
         * @param String password 密码
         * @param String code 短信验证码,有手机号时必填
         * @param String key 图形验证码key
         * @param String verify_code 图形验证码
         * @param String source 来源 1创序科学APP 2创序科学网站 3创序医学APP

         */
        register(params) {

            let param = api.initParam(params);
            return api.POST('/api/user', param);

        },


        /**
         * 用户重置密码

         * @param String email 手机号,无phone时必填
         * @param String phone 手机号,无email时必填
         * @param String password 密码
         * @param String code 短信验证码,有手机号时必填
         * @param String key 图形验证码key
         * @param String verify_code 图形验证码

         */
        resetPassword(params) {

            let param = api.initParam(params);
            return api.POST('/api/user/password/reset', param);

        },


        /**
         * 取用户信息
         * 需要授权信息
         * @param String id 用户ID,若未提供则取当前用户信息

         */
        show(id) {


            let url = '/api/user/' + id
            return api.GET(url);


        },


        /**
         * 用户创建

         * @param String email 手机号,无phone时必填
         * @param String phone 手机号,无email时必填
         * @param String password 密码
         * @param String code 短信验证码,有手机号时必填
         * @param String key 图形验证码key
         * @param String verify_code 图形验证码
         * @param String source 来源 1创序科学APP 2创序科学网站 3创序医学APP

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/user', param);

        },


        /**
         * 修改用户信息
         * 需要授权信息
         * @param String id ID
         * @param String name 姓名
         * @param String real_name 姓名
         * @param String gender 性别, -1未知/0女/1男
         * @param String orcid ORCID
         * @param String email2 备用邮箱
         * @param String introduce 简介
         * @param String country 国家ID
         * @param String area_id 地区ID
         * @param String hospital_id 医院ID
         * @param String hospital_title 输入的医院名称
         * @param String school_id 学校ID
         * @param String school_title 输入的学校名称
         * @param String department_id 部门ID
         * @param String department_title 输入的部门名称
         * @param String subject_id 专业ID
         * @param String subject_title 输入的专业名称
         * @param String position_id 职位
         * @param String position_title 职位
         * @param String language 语言
         * @param String currency 货币

         */
        update(id, params) {

            let url = '/api/user/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 修改用户头像
         * 需要授权信息
         * @param String id Id
         * @param String is_cover 是否背景, 0否/1是
         * @param String uri 地址
         * @param String size 大小

         */
        updateAvatar(id, params) {

            let url = '/api/user/' + id + '/avatar'

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },


        /**
         * 修改密码
         * 需要授权信息
         * @param String id ID
         * @param String old_password 原密码
         * @param String password 密码

         */
        updatePassword(id, params) {

            let url = '/api/user/' + id + '/password'

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },

    Workflow: {


        /**
         * 删除Workflow
         * 需要授权信息
         * @param String id Workflow id

         */
        destroy(id) {

            let url = '/api/workflow/' + id
            return api.DELETE(url);

        },


        /**
         * 获取Workflow列表
         * 需要授权信息

         */
        index(params) {


            let param = api.initParam(params);
            return api.GET('/api/workflow', param);


        },


        /**
         * 获取Workflow详情

         * @param String id Workflow id

         */
        show(id) {


            let url = '/api/workflow/' + id
            return api.GET(url);


        },


        /**
         * 创建Workflow
         * 需要授权信息
         * @param String title title

         */
        store(params) {

            let param = api.initParam(params);
            return api.POST('/api/workflow', param);

        },


        /**
         * 更新Workflow
         * 需要授权信息
         * @param String id Id
         * @param String title title

         */
        update(id, params) {

            let url = '/api/workflow/' + id

            let param = api.initParam(params);
            return api.UPDATE(url, param);


        },

    },


}

export default api;